#define _CRT_SECURE_NO_WARNINGS 1



 struct ListNode {
     int val;
     ListNode *next;
     ListNode() : val(0), next(nullptr) {}
     ListNode(int x) : val(x), next(nullptr) {}
     ListNode(int x, ListNode *next) : val(x), next(next) {}
 };

class Solution {
public:
    ListNode* reverse(ListNode* cur, ListNode* prev)
    {
        if (cur == nullptr) return prev;
        ListNode* next = cur->next;
        cur->next = prev;
        return reverse(next, cur);
    }

    ListNode* reverseList(ListNode* head) {
        return reverse(head, nullptr);
    }
};

int main()
{
    Solution list;

    return 0;
}